package javabase;

import java.util.LinkedList;
import java.util.Queue;

/**
 * Created by mHandler on 2018/5/15 0015.
 * Description:基于LinkedList实现普通队列
 */
public class LinkedListToQueue<T> {

    public LinkedListToQueue(){

    }


    private LinkedList<T> queue = new LinkedList<T>();

    /**往队列尾部插入元素，返回插入结果*/
    public boolean offer(T t){
        return queue.offer(t);
    }

    /** 检索，但是不移除队列的头，如果此队列为空，则返回 null */
    public T peek() {
        return queue.peek();
    }

    /** 检索，但是不移除此队列的头 */
    /** 此方法与 peek 方法的惟一不同是，如果此队列为空，它会抛出一个异常 */
    public T element() {
        return queue.element();
    }

    /** 检索并移除此队列的头，如果队列为空，则返回 null */
    public T poll() {
        return queue.poll();
    }

    /** 检索并移除此队列的头 */
    /** 此方法与 poll 方法的不同在于，如果此队列为空，它会抛出一个异常 */
    public T remove() {
        return queue.remove();
    }

    /** 队列是否为空 */
    public boolean empty() {
        return queue.isEmpty();
    }

    /** 打印队列元素 */
    public String toString() {
        return queue.toString();
    }

    public static void main(String[] args) {
        LinkedListToQueue<String> queue =new LinkedListToQueue<>();
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        //[a, b, c]
        System.out.println(queue.toString());

        Object obj=queue.peek();
        // a--[a, b, c]
        System.out.println(obj+"--"+queue.toString());
        obj=queue.element();
        // a--[a, b, c]
        System.out.println(obj+"--"+queue.toString());
        obj=queue.poll();
        //a--[b, c]
        System.out.println(obj+"--"+queue.toString());
        obj=queue.remove();
        //b--[c]
        System.out.println(obj+"--"+queue.toString());
        //false
        System.out.println(queue.empty());
    }
}
